package com.j48.entrancegurad.mapper;

import com.j48.entrancegurad.model.Opinion;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

/**
 * opinion表操作
 */
@Repository
@Mapper
public interface OpinionMapper {
    /**
     * 查询所有意见
     * @return 意见列表
     */
    @Select("select * from `opinion`")
    public ArrayList<Opinion> selectAll();
    /**
     * 查询所有未读意见
     * @return 未读意见列表
     */
    @Select("select * from `opinion` where opinion_status=0")
    public ArrayList<Opinion> selectAllAble();
    /**
     * 查询所有已读意见
     * @return 已读意见列表
     */
    @Select("select * from `opinion` where opinion_status=1")
    public ArrayList<Opinion> selectAllfinished();
    /**
     * 按编号查询意见
     * @param opinion 查询条件
     * @return 查询结果
     */
    @Select("select * from `opinion` where opinion_id=#{opinion_id}")
    public Opinion selectById(Opinion opinion);
    /**
     * 按用户查询意见
     * @param opinion 查询条件
     * @return 查询结果
     */
    @Select("select * from `opinion` where opinion_user_id=#{opinion_user_id}")
    public Opinion selectByUser(Opinion opinion);

    /**
     * 按用户查询意见
     * @param opinion 查询条件
     * @return 查询结果
     */
    @Select("select * from `opinion` where opinion_user_id=#{opinion_user_id} and opinion_status=0")
    public ArrayList<Opinion> selectByUserId(Opinion opinion);

    /**
     * 按用户查询意见
     * @param opinion 查询条件
     * @return 查询结果
     */
    @Select("select * from `opinion` where opinion_user_id=#{opinion_user_id}")
    public ArrayList<Opinion> selectByUserId1(Opinion opinion);

    /**
     * 添加意见
     * @param opinion 被添加的意见
     * @return 影响数据库数据条数
     */
    @Insert("insert into `opinion`(opinion_content,opinion_user_id,opinion_createtime) values (#{opinion_content},#{opinion_user_id},#{opinion_createtime})")
    public int insert(Opinion opinion);

    /**
     * 更新意见信息
     * @param opinion 更新后的意见
     * @return 影响数据库数据条数
     */
    @Update("update `opinion` set opinion_admin_id=#{opinion_admin_id},opinion_lasttime=#{opinion_lasttime},opinion_status=1 where opinion_id=#{opinion_id}")
    public int update(Opinion opinion);

    /**
     * 更新意见信息
     * @param opinion 更新后的意见
     * @return 影响数据库数据条数
     */
    @Update("update `opinion` set opinion_lasttime=#{opinion_lasttime} where opinion_id=#{opinion_id}")
    public int updatetime(Opinion opinion);

    /**
     * 删除意见
     * @param opinion
     * @return
     */
    @Delete("delete from `opinion` where opinion_id=#{opinion_id}")
    public int deleteById(Opinion opinion);

}
